###############################################################################
# SuperLinks                                                                  #
# Copyright (c) 2000-2007 Greg Nolle (http://greg.nolle.co.uk)                #
###############################################################################
# This program is free software; you can redistribute it and/or modify it     #
# under the terms of the GNU General Public License as published by the Free  #
# Software Foundation; either version 2 of the License, or (at your option)   #
# any later version.                                                          #
#                                                                             #
# This program is distributed in the hope that it will be useful, but WITHOUT #
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or       #
# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for   #
# more details.                                                               ##                                                                             #
# You should have received a copy of the GNU General Public License along     #
# with this program; if not, write to the Free Software Foundation, Inc.,     #
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.                 #
###############################################################################
# Random.pm.pl -> Random module                                               #
###############################################################################
# DON'T EDIT BELOW UNLESS YOU KNOW WHAT YOU'RE DOING!                         #
###############################################################################
package Random;

BEGIN { require "System.pm.pl"; import System qw($SYSTEM); }
BEGIN { require "General.pm.pl"; import General qw($GENERAL); }
require "Error.pm.pl";
require "Standard.pm.pl";

use strict;

sub new {
  my ($class) = @_;
  my $self    = {};
  return bless($self, $class);
}

sub DESTROY { }

###############################################################################
# show subroutine
sub show {
  my $self = shift;
	my %in = (DB => undef, @_);

  my $LANGUAGE = &Standard::GetLanguage("Random");

  #----------------------------------------------------------------------#
  # Getting data...                                                      #

  my $Resources;
  
  if (scalar(@{ $GENERAL->{'RANDOM_CATEGORIES'} }) >= 1) {
    ($Resources, undef) = $in{'DB'}->Query(
      TABLE   => "Resources",
      WHERE   => {
        CATEGORY  => $GENERAL->{'RANDOM_CATEGORIES'}
      },
      MATCH   => "ANY",
      SORT    => "ID",
      BY      => "A-Z"
    );
    
    @{$Resources} = grep { $_->{'STATUS'} && $_->{'HITS'} >= $GENERAL->{'RANDOM_MIN_HITS'} && $_->{'RATING'} >= $GENERAL->{'RANDOM_MIN_RATING'} } @{$Resources};
  } else {
    ($Resources, undef) = $in{'DB'}->Query(
      TABLE   => "Resources",
      WHERE   => {
        HITS    => [">".($GENERAL->{'RANDOM_MIN_HITS'} - 1)],
        RATING  => [">".($GENERAL->{'RANDOM_MIN_RATING'} - 1)],
        STATUS  => ["1"]
      },
      MATCH   => "ALL",
      SORT    => "ID",
      BY      => "A-Z"
    );
  }
  
  unless (scalar(@{ $Resources }) >= 1) {
    &Error::Error("SL", MESSAGE => $LANGUAGE->{'NO-RESOURCES'});
  }
  
  my $Resource = $Resources->[int(rand(scalar(@{$Resources})))];

  #----------------------------------------------------------------------#
  # Updating data...                                                     #

  (
    $in{'DB'}->Update (
      TABLE   => "Resources",
      VALUES  => {
        HITS  => "++\${HITS}"
      },
      KEY     => $Resource->{'ID'}
    )
  ) || &Error::Error("SL", MESSAGE => "Error updating record in database. $in{'DB'}->{'ERROR'}");

  #----------------------------------------------------------------------#
  # Printing page...                                                     #

  print $SL::CGI->redirect($Resource->{'URL'});
  
  return 1;
}

1;